package IoDemo;

import java.io.*;

/**
 * @Author Zhang Chao
 * @Date 2021/5/25 10:57
 * @Version 1.0
 */
public class TestDriver01 {
    public static void main(String[] args) {
        test01();
    }

    /**
     * IO流的案例： 读取文件并写入新文件
     * 输入 输出 是相对于内存的
     *
     * 问题：如何写相对路径
     */
    private static void test01(){

        try {
            //1.声明一个输入流对象
            InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("F:\\Project-space\\java_demo\\java_basics_demo\\src\\IoDemo\\file\\file1.txt"),"UTF-8");
            //2.声明一个对象输出流
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream("F:\\Project-space\\java_demo\\java_basics_demo\\src\\IoDemo\\file\\file2.txt"), "UTF-8");


            //3.读取文件内容
            // 声明一个用于读取文件的临时缓存的数组对象，长度可以自定义
            char[] chars = new char[1024];
            // 读取的长度
            int len = -1;
            // 读取数组
            System.out.println("读取的内容：");
            do {
                len = inputStreamReader.read(chars, 0, 1024);
                if (len > 0) {
                    String string = new String(chars, 0, len);
                    System.out.print(string);

                    // 业务逻辑处理，把读取的内容重新写入新的文件中
                    outputStreamWriter.write(chars, 0, len);
                    // 清空和刷新写出缓存区
                    outputStreamWriter.flush();
                }
            }while(len>0);

            //4.回收资源s
            // 业务处理完成之后，回收资源 --- 资源回收也可以写在 finally 部分
            inputStreamReader.close();
            outputStreamWriter.close();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }



    }
}
